home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
game
/
porepore
/
porepore.bas
< prev
next >
Wrap
BASIC Source File
|
1993-11-30
|
12KB
|
239 lines
10000 '********************************************************************
10010 '* 『ポレポレだ!!』 *
10020 '* 対戦型アクションパスル○×ゲーム *
10030 '* 制作 宮城県仙台第二高等学校物理部 *
10040 '* プログラム 本間 尚樹&鈴木 賢 *
10050 '* キャラクター 本間 尚樹 *
10060 '* ミュ-ジック 石川 友則(物理部員I) *
10070 '* 1991年3月20日(水) *
10080 '* 1993年2月26日(金) コイパイラ対応 *
10090 '* 1993年8月13日(金) フリコレ7応募 *
10100 '********************************************************************
10110 DEFINT A-Z,○,×:LOAD@"fm_1.fmb"
10120 GOSUB 10810:MB=0
10130 GOSUB *タイトル:CLS:W(0)=0:W(1)=0:BGM 0:PLAY"T150@29O3B16>E2":BGM 1
10140 '*
10150 LINE(32+4*16,32)-(32+11*16+15,16+12*16-1),PSET,0,BF
10160 FOR I=0 TO 7
10170 C=I*16+128
10180 LINE(32+3*16+I,16+I)-(32+12*16+15-I,16+12*16+15-I),PSET,[C,C,C],B
10190 LINE(32+3*16+15-I,16+15-I)-(32+12*16+I,16+12*16+I),PSET,[C,C,C],B
10200 NEXT
10210 'FOR Y=0 TO 12:BF(3,Y)=7:BF(12,Y)=7:NEXT
10220 FOR Y=1 TO 11
10230 FOR X=4 TO 11
10240 BF(X,Y)=0
10250 NEXT
10260 NEXT
10270 GOSUB *SON
10280 '****************** MAIN ******************************************
10290 '*
10300 X=7:Y=1
10310 IF INKEY$<>"" THEN 10310
10320 P=0:CNT=0:GOSUB *SCHENGE:GOSUB *PUTCHR
10330 MX=0:PD=PAD(1+MB):PT=PTRIG(MB+1):IF PD<>0 THEN P=P+1 ELSE P=0
10340 X$=INKEY$:IF X$<>"" THEN P=9
10350 IF MB=1 THEN PD=PD-(X$=CHR$(&H1C))*3-(X$=CHR$(&H1D))*7-(X$=CHR$(&H1F))*5
10360 IF PD=3 AND (P=1 OR P>8) THEN MX=1
10370 IF PD=7 AND (P=1 OR P>8) THEN MX=-1
10380 IF BF(X+MX,Y)<>0 THEN MX=0
10390 X=X+MX:CNT=CNT+1:MY=0
10400 IF CNT>(3-W(MB))^2*4+4 THEN CNT=0:PLAY"T255@26O3L16DE-":MY=1:IF BF(X,Y+MY)<>0 THEN *積む
10410 IF PD=5 THEN MY=1:P=0:IF BF(X,Y+MY)<>0 THEN *積む ELSE Y=Y+MY:GOSUB *PUTCHR:FOR I=0 TO 50:NEXT:GOTO 10330
10420 Y=Y+MY:GOSUB *PUTCHR:WAIT 3
10430 '
10440 GOTO 10330
10450 '********************** 積む ****************************************
10460 *積む
10470 BF(X,Y)=MB+1:PLAY"T250@26O5L16D-FA-"
10480 IF MB=0 THEN PUT@A(X*16+32,Y*16+16)-(X*16+32+15,Y*16+16+15),○G
10490 IF MB=1 THEN PUT@A(X*16+32,Y*16+16)-(X*16+32+15,Y*16+16+15),×G
10500 '********************** 判定 ****************************************
10510 NN=0
10520 FOR II=-3 TO 3
10530 IF BF(X+II,Y)=MB+1 THEN NN=NN+1 ELSE NN=0'横
10540 IF NN>=4 THEN II=4:NEXT:GOTO *勝敗
10550 NEXT
10560 NN=0
10570 FOR II=0 TO 3:IF BF(X,Y+II)=MB+1 THEN NN=NN+1 ELSE NN=0'縦
10580 IF NN>=4 THEN II=4:NEXT:GOTO *勝敗
10590 NEXT
10600 IF Y>=3 THEN HH=-3 ELSE HH=-Y
10610 NN=0
10620 FOR II=HH TO 3:IF BF(X+II,Y+II)=MB+1 THEN NN=NN+1 ELSE NN=0'右下
10630 IF NN>=4 THEN II=4:NEXT:GOTO *勝敗
10640 NEXT
10650 NN=0
10660 FOR II=HH TO 3:IF BF(X-II,Y+II)=MB+1 THEN NN=NN+1 ELSE NN=0'左下
10670 IF NN>=4 THEN II=4:NEXT:GOTO *勝敗
10680 NEXT
10690 IF X=7 AND Y=1 THEN 10720 ELSE WC=0
10700 MB=MB+1:IF MB=2 THEN MB=0
10710 GOTO 10290
10720 WC=WC+1
10730 IF WC<4 THEN BEEP 1:FOR II=0 TO 500:NEXT:BEEP 0:LINE(X*16+32,Y*16+16)-STEP(15,15),PSET,0,BF
10740 IF WC>3 THEN BEEP 1:FOR II=0 TO 5000:NEXT:BEEP 0:MB=(MB+1)MOD 2:GOTO *勝敗
10750 GOTO 10290
10760 '****************** SPRITE ************************************
10770 *SON: SPRITE 0,0,1:RETURN
10780 *SOFF: SPRITE 0,0,0:RETURN
10790 *SCHENGE :SPRITE 1,0,MB*4:RETURN
10800 *PUTCHR: SPRITE 6,0,X*16-SPRITE(0,6),Y*16+16-SPRITE(0,7):RETURN
10810 '****************** 初期 設定 **************************************
10820 SCREEN@1:COLOR 7,0:CLS:SPRITE ON
10830 DIM A(256),○G(256),×G(256),BF(16,16),W(1)
10840 FOR F=0 TO 1
10850 FOR I=0 TO 255
10860 READ A(I)
10870 IF A(I)=0 THEN A(I)=-32768
10880 NEXT
10890 DEF SPRITE 0,F*4,A,1
10900 NEXT
10910 DEF SPRITE 1,0,(0,0),0:SPRITE 5,0,0
10920 SPRITE SCREEN (32,0)
10930 RESTORE
10940 FOR I=0 TO 255:READ ○G(I):NEXT
10950 FOR I=0 TO 255:READ ×G(I):NEXT
10960 FOR X=3 TO 12:BF(X,0)=7:BF(X,12)=7:NEXT
10970 FOR Y=0 TO 12:BF(3,Y)=7:BF(12,Y)=7:NEXT
10980 RETURN
10990 '**************** タイトル ******************************************
11000 *タイトル
11010 CLS:GOSUB *SOFF
11020 COLOR,7
11030 FOR I=0 TO 3
11040 FOR J=0 TO 3-I
11050 SYMBOL(160-16*4,32*(J+1)),KMID$("ポレポレポ",I MOD 2+1,4),2,2,0,,,8
11060 FOR K=0 TO 20'100
11070 GOSUB *TRIG
11080 IF F<>0 THEN K=1000:NEXT:J=3-I:NEXT:I=3:NEXT:GOTO 11440
11090 NEXT
11100 LINE(160-16*4,32*(J+1)-2)-STEP(32*4-1,32+1),PSET,0,BF
11110 NEXT
11120 SYMBOL(160-16*4,32*(J+1)),KMID$("ポレポレポ",I MOD 2+1,4),2,2,0,,,8
11130 FOR K=0 TO 20'100
11140 GOSUB *TRIG
11150 IF F<>0 THEN K=1000:NEXT:I=3:NEXT:GOTO 11440
11160 NEXT
11170 NEXT
11180 LINE(160-16*4,32*2-2-1)-STEP(32*4-1,1),PSET,0,B
11190 FOR I=0 TO 15
11200 RR1=R1:RR2=R2:R1=INT(RND*4):R2=INT(RND*4)
11210 IF R1=RR1 AND R2=RR2 THEN 11200
11220 FOR J!=0 TO 2 STEP .5!
11230 FOR K=0 TO 15'100
11240 GOSUB *TRIG:IF F<>0 THEN K=1000:J!=2:I=100:NEXT K,J!,I:GOTO 11440
11250 NEXT
11260 IF R1 MOD 2=R2 MOD 2 THEN 11280
11270 PUT@A(96+32*R1,32*(R2+2)-1)-(96+32*R1+15,32*(R2+2)+14),○G,,2,J!:GOTO 11290
11280 PUT@A(96+32*R1,32*(R2+2)-1)-(96+32*R1+15,32*(R2+2)+14),×G,,2,J!
11290 '*
11300 NEXT
11310 NEXT
11320 FLAG=(RND>=.5!)
11330 FOR J!=0 TO 2 STEP .5!/2
11340 FOR K=0 TO 15'100
11350 GOSUB *TRIG:IF F<>0 THEN K=1000:J!=2:NEXT K,J!:GOTO 11440
11360 NEXT
11370 IF FLAG=0 THEN PUT@A(96,32*2-1)-(96+15,32*2+14),○G,,8,J!*4 ELSE PUT@A(96,32*2-1)-(96+15,32*2+14),×G,,8,J!*4
11380 NEXT
11390 COLOR 7,0
11400 FOR I=0 TO 300'3000
11410 GOSUB *TRIG:IF F<>0 THEN I=3000
11420 NEXT
11430 GOTO 11010
11440 '*
11450 COLOR 7,0
11460 RETURN
11470 *TRIG:WAIT 1:IF PTRIG(1)=0 AND PTRIG(2)=0 THEN F=0 ELSE F=1
11480 RETURN
11490 '******************* 勝敗 ****************************************
11500 *勝敗
11510 GOSUB *SOFF
11520 IF MB=0 THEN XX=32 ELSE XX=240
11530 ON MB+1 GOTO 11540,11550
11540 PLAY"T120L16@20O5C8C<AFA8AGFD<B>C4","T120L16@20O4E8EEA4D4G4","T120L16@25O4C8CCFF8FD8<B8>G4": PUT@A(XX,176-W(MB)*48)-(XX+15,176-W(MB)*48+15),○G,,3,3:GOTO 11560
11550 PLAY"T120@8L8O3EFA-AB{ABA}8FDE2","T120L8@8O3R4EFA-ABAA-2","T120L8O4@38CC@76CC@38CC@76CCC": PUT@A(XX,176-W(MB)*48)-(XX+15,176-W(MB)*48+15),×G,,3,3
11560 IF W(MB)+1=4 AND MB=0 THEN PLAY"@28T180O3L8A4A>DF+AF+D< G4G>CEGEC< B>DFA GG+AB>C4r4l16o4eg>c","T180@26O4L4D<A>F+D C<G>EC U0 <BG>D<G>E "
11570 IF W(MB)+1=4 AND MB=1 THEN PLAY"@28T180O3L8 A4A>DF+ A F+D< G4G>CE-GE-C< B>DFA-GG+AB>C4r4l16o4e-g>c","T180@26O4L4D<A>F+D C<G>E-C U0 <BG>D<G>E- "
11580 '*
11590 PF=0
11600 WHILE PF=0
11610 FOR II=0 TO 50:WAIT 1:IF PTRIG(1)<>0 OR PTRIG(2)<>0 THEN PF=1:II=1000
11620 NEXT
11630 LINE(XX,176-W(MB)*48)-(XX+47,176-W(MB)*48+47),XOR,7,BF
11640 FOR II=0 TO 50:WAIT 1::IF PTRIG(1)<>0 OR PTRIG(2)<>0 THEN PF=1:II=1000
11650 NEXT
11660 LINE(XX,176-W(MB)*48)-(XX+47,176-W(MB)*48+47),XOR,7,BF
11670 WEND
11680 W(MB)=W(MB)+1:IF W(MB)=4 THEN 10130
11690 MB=MB+1:IF MB=2 THEN MB=0
11700 GOTO 10140
11710 '****************** DATA ************************************
11720 REM SPRITE(2) No00
11730 DATA &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF
11740 DATA &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF, &H7FFF
11750 DATA &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H3DEF, &H3DEF
11760 DATA &H3DEF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H3DEF
11770 DATA &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H3DEF, &H3DEF, &H6F7B, &H6F7B
11780 DATA &H6F7B, &H6F7B, &H3DEF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H3DEF
11790 DATA &H7FFF, &H6F7B, &H6F7B, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11800 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H3DEF
11810 DATA &H7FFF, &H6F7B, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11820 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H6F7B, &H3DEF
11830 DATA &H7FFF, &H6F7B, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11840 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H6F7B, &H3DEF
11850 DATA &H7FFF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11860 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H3DEF
11870 DATA &H7FFF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11880 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H3DEF
11890 DATA &H7FFF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11900 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H3DEF
11910 DATA &H7FFF, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11920 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H3DEF
11930 DATA &H7FFF, &H6F7B, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11940 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H6F7B, &H3DEF
11950 DATA &H7FFF, &H6F7B, &H3DEF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11960 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H6F7B, &H3DEF
11970 DATA &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
11980 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H6F7B, &H6F7B, &H3DEF
11990 DATA &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H7FFF, &H6F7B, &H6F7B
12000 DATA &H6F7B, &H6F7B, &H7FFF, &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H3DEF
12010 DATA &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H7FFF, &H7FFF
12020 DATA &H7FFF, &H7FFF, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H3DEF
12030 DATA &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF
12040 DATA &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF, &H3DEF
12050 REM SPRITE(2) No01
12060 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
12070 DATA &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B, &H6F7B
12080 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52
12090 DATA &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12100 DATA &H6F7B, &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52, &H4A52, &H4A52
12110 DATA &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52, &H2D6B
12120 DATA &H6F7B, &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52, &H4A52
12130 DATA &H4A52, &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52, &H2D6B
12140 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52
12150 DATA &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52, &H4A52, &H2D6B
12160 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52
12170 DATA &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12180 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF
12190 DATA &H2D6B, &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12200 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12210 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12220 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B, &H6F7B
12230 DATA &H6F7B, &H3DEF, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12240 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52
12250 DATA &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12260 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52
12270 DATA &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52, &H4A52, &H2D6B
12280 DATA &H6F7B, &H4A52, &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52, &H4A52
12290 DATA &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52, &H4A52, &H2D6B
12300 DATA &H6F7B, &H4A52, &H2D6B, &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52
12310 DATA &H4A52, &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF, &H4A52, &H2D6B
12320 DATA &H6F7B, &H4A52, &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52
12330 DATA &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H6F7B, &H3DEF, &H2D6B
12340 DATA &H6F7B, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52
12350 DATA &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H4A52, &H2D6B
12360 DATA &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B
12370 DATA &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B, &H2D6B